Debugging is a methodical process of finding and reducing the number of defects (i.e., “bugs”) in a piece of electronic equipment or a computer program running thereon. Various debug techniques can be used to detect anomalies, assess their impact, and schedule hardware changes, software patches or full updates to a system. The goals of debugging include identifying and fixing bugs in the system (e.g., logical or synchronization problems in the code, or a design error in the hardware) and collecting information about the operation of the system that may then be used to analyze the system to find ways to boost its performance or to optimize other important characteristics.